{"values":{"name":"WooCommerce instaliacija","code":"WOO-INIT","description":null,"triggerTypeId":0,"placeId":"multiple-place","scriptContent":"const VERSION = '1.0.0'\nconst TREE = {code: \"XX-Automations\", name: \"Automations\"};\nconst GROUP = {code: \"WooCommerce\", name: \"WooCommerce Integration\"}\n\noutput = {result: await main()};\n\nasync function main() {\n\n  const groupId = await ensureParameterGroup(TREE, GROUP)\n  const parameterConfigs = [\n    { code: \"WOO-API\", type: \"API\" },\n    { code: \"WOO-DEFAULTS\", type: \"DEFAULTS\" },\n    { code: \"WOO-PAYMENTS\", type: \"PAYMENTS\" },\n    { code: \"WOO-STOCK\", type: \"STOCK\" }\n  ];\n\n  const createdParameters = [];\n\n  for (const parameter of parameterConfigs) {\n    const existingParameter = await getParameterCode(parameter.code);\n    if (!existingParameter) {\n      await createParameter(parameter.code, parameter.type, groupId, VERSION)\n      createdParameters.push(parameter.code);\n    }\n  }\n\n  if (createdParameters.length > 0) {\n    const statusMessage = `Sukurti nauji parametrai: ${createdParameters.join(\n      \", \"\n    )}.\\nReikia juos užpildyti.`;\n    return statusMessage;\n  } else {\n    return \"Naujų parametrų nebuvo sukurta.\";\n  }\n}\n\nasync function getParameterCode(code) {\n\n  const result = await rql(`SELECT code FROM parameters WITH size = 1 WHERE code=\"${code}\"`);\n  return result?.content[0]?.code;\n}\n\nasync function createParameter(parameterCode, type, groupId, version) {\n\n  const baseConfig = {\n    code: parameterCode,\n    groupId,\n    \"allowCompany\": true,\n    \"allowModule\": true,\n    \"allowModuleAny\": true,\n    \"canOverride\": true,\n    \"moduleRequired\": true,\n    \"moduleTitle\": \"El. parduotuvė\",\n  };\n\n  const typeConfigs =\n  {\n    API: {\n      name: \"WOO-API\",\n      schema: parameterSchemeAPI(version)\n    },\n    DEFAULTS: {\n      name: \"WOO-DEFAULTS\",\n      schema: parameterSchemeDefaults(version)\n    },\n    STOCK: {\n      name: \"WOO-STOCK\",\n      schema: parameterSchemeStock(version),\n    },\n    PAYMENTS: {\n      name: \"WOO-PAYMENTS\",\n      schema: parameterSchemePayments(version),\n      bypassKeyUniques: true,\n    },\n  };\n\n  if (!typeConfigs[type]) {\n    throw new Error(`Unknown parameter type: ${type}`);\n  }\n\n  const parameter = {\n    ...baseConfig,\n    ...typeConfigs[type]\n  }\n\n  await mutate(\"createParameter\", { name: parameter.name, code: parameter.code, parameter });\n}\n\nfunction parameterSchemeAPI(version) {\n  const url = { \"type\": \"string\", \"title\": \"URL\" };\n  const method = {\n    \"list\": [\"GET\", \"POST\"],\n    \"title\": \"Method\"\n  };\n  const authType = {\n    \"list\": [\n      {\n        \"id\": \"noAuth\",\n        \"name\": \"No Auth\"\n      },\n      {\n        \"id\": \"basicAuth\",\n        \"name\": \"Basic Auth\"\n      },\n      {\n        \"id\": \"bearer\",\n        \"name\": \"Bearer Token\"\n      }\n    ],\n    \"title\": \"Authorization Type\"\n  };\n  const auth = {\n    \"type\": \"string\",\n    \"title\": \"Authorization\",\n    \"format\": \"password\"\n  };\n\n  const schema = {\n    $schema: \"http://json-schema.org/draft-07/schema\",\n    type: \"object\",\n    version: version,\n    title: \"WooCommerce API\",\n    required: [\"url\", \"method\", \"authType\", \"auth\"],\n    properties: {\n      url,\n      method,\n      authType,\n      auth\n    },\n    additionalProperties: false\n  };\n\n  return JSON.stringify(schema);\n}\n\nfunction parameterSchemeDefaults(version) {\n  const defaultClientId = {\n    list: \"clients\",\n    title: \"Client\",\n    isMasterData: true\n  };\n\n  const defaultDepartmentId = {\n    \"list\": \"departments\",\n    \"title\": \"Departments\",\n    \"isMasterData\": true\n  };\n\n  const defaultShippingId = {\n    \"list\": \"products\",\n    \"title\": \"Pristatymo paslauga\",\n    \"isMasterData\": true\n  };\n\n  const defaultFeeId = {\n    \"list\": \"products\",\n    \"title\": \"Rinkliava\",\n    \"isMasterData\": true\n  };\n\n  const defaultJournalId = {\n    \"list\": \"journals\",\n    \"title\": \"Journal\",\n    \"isMasterData\": true\n  };\n\n  const defaultUnknownProductId = {\n    \"list\": \"products\",\n    \"title\": \"Nerasta prekė\",\n    \"isMasterData\": true\n  };\n\n  const productGroupId = {\n    \"title\": \"Grupė priskiriama naujai prekei\",\n    \"list\": \"productGroupsForPosParam\"\n  };\n\n  const defaultDocumentType = {\n    \"title\": \"Dokumento tipas\",\n    \"list\": [\n      {\n        \"id\": 1,\n        \"name\": \"Užsakymas\"\n      },\n      {\n        \"id\": 2,\n        \"name\": \"SF\"\n      }\n    ]\n  };\n\n  const lastDate = {\n    \"type\": \"string\",\n    \"format\": \"date-time\",\n    \"title\": \"Paskutinė importuoto dokumento data\"\n  };\n\n  const schema = {\n    $schema: \"http://json-schema.org/draft-07/schema\",\n    type: \"object\",\n    version: version,\n    title: \"Defaults\",\n    required: [\n      \"defaultDepartmentId\",\n      \"defaultShippingId\",\n      \"defaultFeeId\",\n      \"defaultJournalId\",\n      \"defaultDocumentType\",\n      \"productGroupId\",\n      \"defaultUnknownProductId\"\n    ],\n\n    properties: {\n      defaultClientId,\n      defaultDepartmentId,\n      defaultShippingId,\n      defaultFeeId,\n      defaultJournalId,\n      defaultUnknownProductId,\n      productGroupId,\n      defaultDocumentType,\n      lastDate\n    },\n    additionalProperties: false\n  };\n\n  return JSON.stringify(schema);\n}\n\nfunction parameterSchemeStock(version) {\n  const departmentIds = {\n      \"type\": \"array\",\n      \"title\": \"Department\",\n      \"items\": {\n        \"list\": \"departments\",\n        \"title\": \"Department\"\n      }\n    };\n\n  const productTreeId = {\n    \"list\": \"productTrees\",\n    \"title\": \"Product tree\"\n  };  \n\n  const lastDate = {\n    \"type\": \"string\",\n    \"format\": \"date-time\",\n    \"title\": \"Paskutinė importuoto dokumento data\"\n  };\n\n  const schema = {\n    $schema: \"http://json-schema.org/draft-07/schema\",\n    type: \"object\",\n    version: version,\n    title: \"WooCommerce stock\",\n    required: [\n      \"lastDate\"\n    ],\n\n    properties: {\n      departmentIds,\n      productTreeId,\n      lastDate\n    },\n    additionalProperties: false\n  };\n\n  return JSON.stringify(schema);\n}\n\nfunction parameterSchemePayments(version) {\n\n    const  id = {\n      \"list\": \"paymentMethods\",\n      \"title\": \"Mokėjimo metodas\",\n      \"isMasterData\": true\n    };\n    const value = {\n      \"type\": \"string\",\n      \"title\": \"Reikšmė\"\n    };\n\n  const schema = {\n    $schema: \"http://json-schema.org/draft-07/schema\",\n    type: \"object\",\n    version: version,\n    title: \"WooCommerce payments\",\n    required: [\n      \"id\",\n      \"value\"\n    ],\n    properties: {\n      id,\n      value,\n    },\n    additionalProperties: false\n  };\n\n  return JSON.stringify(schema);\n}\n\nasync function ensureParameterGroup(tree, group) {\n  // Get parameter tree ID or create it if it doesn't exist\n  let treeId = (await rql(`SELECT id FROM parameterTrees WHERE code = '${tree.code}'`))?.content?.[0]?.id;\n\n  if (!treeId) {\n    const resultCreateParameterTree = await mutate(\"createParameterTree\", { parameterTree: tree });\n    treeId = resultCreateParameterTree?.id;\n  }\n\n  // Get parameter group ID or create it if it doesn't exist\n  let parameterGroupId = (await rql(`SELECT id FROM parameterGroups WHERE code = '${group.code}'`))?.content?.[0]?.id;\n\n  if (!parameterGroupId) {\n    const parameterGroup = {\n      treeId,\n      code: group.code,\n      name: group.name,\n      leaf: true,\n    };\n    const resultCreateParameterGroup = await mutate(\"createParameterGroup\", { parameterGroup });\n    parameterGroupId = resultCreateParameterGroup?.id;\n  }\n\n  return parameterGroupId;\n}","paramsFormEnabled":false,"paramsFormSchema":"/*\nČia galite aprašyti parametrų formos schemą\n\n[\n\t{\n\t\t\"blockType\": \"BlockTypeEnum.SELECT\",\n\t\t\"meta\": {\n\t\t\t\"fieldName\": \"client\",\n\t\t\t\"title\": \"Klientas\",\n\t\t\t\"size\": 12,\n\t\t\t\"meta\": {\n\t\t\t\t\"getItems\": \"rql:@MDPAGE SELECT * FROM clients\"\n\t\t\t}\n\t\t}\n\t}\n]\n*/","exampleData":"{\n\t\"id\": \"ba8b1704-a27e-4de3-acde-92b4407da4d1\"\n}","activeFrom":null,"activeTo":null,"active":true,"appDefinitionId":"e21599b4-265f-4adf-b040-d50a664ca899"},"additionalPlaces":[]}